aboutsummaryrefslogtreecommitdiff
path: root/web/pw-server/src/routes/bots/[bot_name].svelte
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2022-10-24 07:19:52 +0200
committerIlion Beyst <ilion.beyst@gmail.com>2022-10-24 07:19:52 +0200
commite3164246e1733c717072b804566a485458769314 (patch)
tree1149693d8e958073ee24915bfe69cb1317287396 /web/pw-server/src/routes/bots/[bot_name].svelte
parent03cdbbc003b102156194568a7b8fc52d636f87f4 (diff)
downloadplanetwars.dev-e3164246e1733c717072b804566a485458769314.tar.xz
planetwars.dev-e3164246e1733c717072b804566a485458769314.zip
create simple stats page
Diffstat (limited to 'web/pw-server/src/routes/bots/[bot_name].svelte')
-rw-r--r--web/pw-server/src/routes/bots/[bot_name].svelte173
1 files changed, 0 insertions, 173 deletions
diff --git a/web/pw-server/src/routes/bots/[bot_name].svelte b/web/pw-server/src/routes/bots/[bot_name].svelte
deleted file mode 100644
index 58e89ad..0000000
--- a/web/pw-server/src/routes/bots/[bot_name].svelte
+++ /dev/null
@@ -1,173 +0,0 @@
-<script lang="ts" context="module">
- import { ApiClient } from "$lib/api_client";
-
- export async function load({ params, fetch }) {
- const apiClient = new ApiClient(fetch);
-
- try {
- const [botData, matchesPage] = await Promise.all([
- apiClient.get(`/api/bots/${params["bot_name"]}`),
- apiClient.get("/api/matches", { bot: params["bot_name"], count: "20" }),
- ]);
-
- const { bot, owner, versions } = botData;
- versions.sort((a: string, b: string) =>
- dayjs(a["created_at"]).isAfter(b["created_at"]) ? -1 : 1
- );
- return {
- props: {
- bot,
- owner,
- versions,
- matches: matchesPage["matches"],
- },
- };
- } catch (error) {
- return {
- status: error.status,
- error: error,
- };
- }
- }
-</script>
-
-<script lang="ts">
- import dayjs from "dayjs";
- import { currentUser } from "$lib/stores/current_user";
- import MatchList from "$lib/components/matches/MatchList.svelte";
- import LinkButton from "$lib/components/LinkButton.svelte";
-
- export let bot: object;
- export let owner: object;
- export let versions: object[];
- export let matches: object[];
-
- // function last_updated() {
- // versions.sort()
- // }
-
- // let files;
-
- // async function submitCode() {
- // console.log("click");
- // const token = get_session_token();
-
- // const formData = new FormData();
- // formData.append("File", files[0]);
-
- // const res = await fetch(`/api/bots/${bot["id"]}/upload`, {
- // method: "POST",
- // headers: {
- // // the content type header will be set by the browser
- // Authorization: `Bearer ${token}`,
- // },
- // body: formData,
- // });
-
- // console.log(res.statusText);
- // }
-</script>
-
-<!--
-<div>Upload code</div>
-<form on:submit|preventDefault={submitCode}>
- <input type="file" bind:files />
- <button type="submit">Submit</button>
-</form> -->
-
-<div class="container">
- <div class="header">
- <h1 class="bot-name">{bot["name"]}</h1>
- {#if owner}
- <a class="owner-name" href="/users/{owner['username']}">
- {owner["username"]}
- </a>
- {/if}
- </div>
-
- {#if $currentUser && $currentUser["user_id"] === bot["owner_id"]}
- <div>
- <!-- TODO: can we avoid hardcoding the url? -->
- Publish a new version by pushing a docker container to
- <code>registry.planetwars.dev/{bot["name"]}:latest</code>, or using the web editor.
- </div>
-
- <div class="versions">
- <h3>Versions</h3>
- <ul class="version-list">
- {#each versions.slice(0, 10) as version}
- <li class="bot-version">
- {dayjs(version["created_at"]).format("YYYY-MM-DD HH:mm")}
- {#if version["container_digest"]}
- <span class="container-digest">{version["container_digest"]}</span>
- {:else}
- <a href={`/code/${version["id"]}`}>view code</a>
- {/if}
- </li>
- {/each}
- </ul>
- {#if versions.length == 0}
- This bot does not have any versions yet.
- {/if}
- </div>
- {/if}
-
- <div class="matches">
- <h3>Recent matches</h3>
- <MatchList {matches} />
- {#if matches.length > 0}
- <div class="btn-container">
- <LinkButton href={`/matches?bot=${bot["name"]}`}>All matches</LinkButton>
- </div>
- {/if}
- </div>
-</div>
-
-<style lang="scss">
- .container {
- width: 800px;
- max-width: 80%;
- margin: 50px auto;
- }
-
- .header {
- display: flex;
- justify-content: space-between;
- align-items: flex-end;
- margin-bottom: 60px;
- border-bottom: 1px solid black;
- }
-
- $header-space-above-line: 12px;
-
- .bot-name {
- font-size: 24pt;
- margin-bottom: $header-space-above-line;
- }
-
- .owner-name {
- font-size: 14pt;
- text-decoration: none;
- color: #333;
- margin-bottom: $header-space-above-line;
- }
-
- .btn-container {
- padding: 24px;
- text-align: center;
- }
-
- .versions {
- margin: 30px 0;
- }
-
- .version-list {
- padding: 0;
- }
-
- .bot-version {
- display: flex;
- justify-content: space-between;
- padding: 4px 24px;
- }
-</style>